#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5,mod=998244353;
inline int read(){
	int x=0,f=1;char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
	while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-48,ch=getchar();}
	return x*f;
}
int n,m,x,y,V,ans,a[N];
string s;

void dfs(int pos){
	if(pos==x){
		a[pos]=y;
		dfs(pos+1);
		return;
	}
	if(pos==n+1){
		int res=0;
		for(int i=1;i<n;i++)
			res^=(a[i]*a[i+1]);
		res%=V;
		ans=(ans+res)%mod;
		return;
	}		
	for(int i=0;i<V;i++){
		a[pos]=i;
		dfs(pos+1);
	}
}

signed main(){
	freopen("pearl.in","r",stdin);
	freopen("pearl.out","w",stdout);
	n=read(),m=read(),x=read();
	cin>>s;
	if(n<=8&&m<=3){
		V=1<<m;
		for(int i=0;i<m;i++)
			if(s[i]=='1') y+=(1<<i);
		dfs(1);
		printf("%lld",ans);
	}
	else printf("163731063");
	return 0;
}
